package com.jagochan.imchat.module.user.service;

import com.jagochan.imchat.module.user.domain.entity.UserBackpack;
import com.baomidou.mybatisplus.extension.service.IService;
import com.jagochan.imchat.module.user.domain.enums.IdempotentEnum;
import com.jagochan.imchat.module.user.domain.enums.ItemTypeEnum;

import java.util.List;

/**
 * <p>
 * 用户背包表 服务类
 * </p>
 *
 * @author 张国庆
 * @since 2025-07-07
 */
public interface UserBackpackService {

    /**
     * 发放物品
     *
     * @param uid            用户ID
     * @param itemId         物品ID
     * @param idempotentEnum 幂等类型
     * @param businessId     业务ID
     */
    void requireItem(Long uid, Long itemId, IdempotentEnum idempotentEnum, String businessId);

    Integer countByItemId(Long uid, Integer itemId);

    /**
     * 获取uid用户的一张有效的改名卡，若无有效改名卡则返回null
     */
    UserBackpack getModifyNameCard(Long uid);

    /**
     * 使用改名卡。把id为id的改名卡的status修改为1（已使用）
     */
    Boolean useModifyNameCard(Long id);

    /**
     * 查询当前用户拥有的【物品】
     */
    List<UserBackpack> listByUidAndItemIds(Long uid, List<Long> itemIdList);

    UserBackpack getValidByUidAndItemId(Long uid, Long itemId);
}
